/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Validacao;

import Empregado.Excecao;
import TratamentoData.Data;

/**
 *
 * @author igor
 */
// Metodo criado para testar os valores de entrada digitadas pelo usuário via interface gráfica
public class validaEntrada {

    public static final String CAMPO_VAZIO = "CAMPOS VAZIOS NÃO SÃO PERMITIDOS";
    public static final String NOME_INVALIDO = "NOME INVÁLIDO";
    public static final String SALARIO_INVALIDO = "SALARIO INCOMPATIVEL";
    public static final String DATA_DEMISSAO = "DATA DE DEMISSÃO INVÁLIDA";
    public static final String MSG_DEMISSAO = "FUNCIONÁRIO DEMITIDO";

    // Esse método foi criado para validar os dados inseridos pelo usuário através da interface gráfica antes
    // da criação e escrita do objeto no sistema
    public static void verificadorEntradaDados(String nome, String CPF, String sexo, String salario, String dataNasc, String dataAdm) throws Excecao {

        try {
            Data d = new Data();
            Data.analisadorData(dataNasc, dataAdm);
            double conversaoSalario = Double.valueOf(salario);
            TesteCPF e = new TesteCPF();
            verificaNulos(CPF, nome, sexo, dataNasc, dataAdm, salario);
            TesteCPF.validaCPF(CPF);
            validarNome(nome);
            verificarSalario(conversaoSalario);

        } catch (Excecao ex) {
            ex.getMessage();
            throw ex;
        }
    }

    public static void verificadorEntradaDados(String nome, String CPF, String sexo, String salario, String dataNasc, String dataAdm, String dataDesl) throws Excecao {
        try {
            Data.analisadorData(dataNasc, dataAdm, dataDesl);
            double conversaoSalario = Double.valueOf(salario);
            verificaNulos(CPF, nome, sexo, dataNasc, dataAdm, salario);
            TesteCPF.validaCPF(CPF);
            validarNome(nome);
            verificarSalario(conversaoSalario);

        } catch (Excecao ex) {
            ex.getMessage();
            throw ex;
        }
    }

    // Metodo abaixo valida se algum dado de entrada é Nulo
    public static void verificaNulos(String cpf, String nome, String sexo, String nasc, String adm, String salario) throws Excecao {
        if (cpf.isEmpty() || nome.isEmpty() || sexo.isEmpty() || nasc.isEmpty() || adm.isEmpty() || salario.isEmpty()) {
            throw new Excecao(CAMPO_VAZIO);
        }

    }

    // A função abaixo analisa se o número de letras é menor que 100 algarismos 
    public static void validarNome(String pNome) throws Excecao {
        if (pNome.length() >= 100) {
            throw new Excecao(NOME_INVALIDO);
        }
    }

    // A função abaixo análisa se o valor de entrada encontra-se no intervalo correto solicitado pelo trabalho
    public static void verificarSalario(double analiseSalario) throws Excecao {

        if (analiseSalario < 500.0 || analiseSalario > 100000.0) {
            throw new Excecao(SALARIO_INVALIDO);
        }
    }

    // Verifica se os dados da simulação de empréstimo são nulos
    public static void verificaNulosEmprestimo(String cpf, String emprestimo) throws Excecao {
        if (cpf.isEmpty() || emprestimo.isEmpty()) {
            throw new Excecao(CAMPO_VAZIO);
        }
    }
}
